package com.xyht.sca_s.student_manage_system.modules.workApplicationGroup.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xyht.sca_s.student_manage_system.common.commonReturn.ResponseResult;
import com.xyht.sca_s.student_manage_system.modules.workApplication.entity.vo.SmsWorkApplicationDetailTorsionVO;
import com.xyht.sca_s.student_manage_system.modules.workApplicationGroup.entity.SmsWorkGroupApplication;
import com.xyht.sca_s.student_manage_system.modules.workApplicationGroup.entity.vo.*;

import javax.servlet.http.HttpServletResponse;
import java.util.concurrent.Future;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author XYHT
 * @since 2023-06-12
 */
public interface SmsWorkGroupApplicationService extends IService<SmsWorkGroupApplication> {

    ResponseResult smsWorkGroupApplicationAdd(SmsWorkGroupApplicationVO smsWorkGroupApplicationVO, String user_id);

    ResponseResult smsWorkGroupApplicationUpdate( SmsWorkGroupApplicationVO smsWorkGroupApplicationVO, String user_id);

    ResponseResult smsWorkGroupApplicationCancel(SmsWorkGroupApplicationCancelVO smsWorkGroupApplicationCancelVO, String user_id);

    ResponseResult allowSmsWorkApplication(SmsWorkGroupApplicationAllowVO allowVO, String user_id);

    ResponseResult getSmsWorkGroupApplicationList(String search_str,Integer allowStatus,String user_id, Integer application_type,Integer sort, Integer pageNum, Integer pageSize);

    ResponseResult getSmsWorkGroupApplicationDetail(String application_id, String user_id);

    ResponseResult getSmsWorkGroupApplicationOriginSettingProcess();

    ResponseResult selectAgent(String person_name);

    Future<ResponseResult> tableDownload(String apply_id, HttpServletResponse response);

    ResponseResult selectAllApply(String apply_unit, Integer pageSize, Integer pageNum,Integer status);

    Future<ResponseResult> exportWorkGroupApplication(SmsWorkGroupApplicationExportVO smsWorkGroupApplicationExportVO, HttpServletResponse response);

    ResponseResult forcedFinishWorkGroupApplication(String applyId,String userId);

    ResponseResult forcedTorsionWorkGroupApplication(SmsWorkApplicationDetailTorsionVO torsionVO);

    ResponseResult replaceApplyWorkGroupApplication(String userId, SmsWorkGroupApplicationAllowVO allowVO);

    ResponseResult forcedRejectWorkGroupApplication(SmsWorkGroupApplicationForceVO forceVO, String userId);

    ResponseResult deletedWorkGroupApplication(String applyId);

    ResponseResult updateOpinion(SmsWorkGroupApplicationUpdateOpinionVo updateOpinionVo,String userId );

    ResponseResult updateAnnex(SmsWorkGroupApplicationUpdateAnnexVo updateAnnexVo, String userId);
}
